package com.yami.shop.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yami.shop.bean.model.PhysicalOrder;
import org.springframework.http.ResponseEntity;

import java.util.List;

/**
 * 实物订单服务接口
 */
public interface PhysicalOrderService {
    
    /**
     * 创建实物订单
     * @param physicalOrder 实物订单信息
     * @return 操作结果
     */
    ResponseEntity<Void> createPhysicalOrder(PhysicalOrder physicalOrder);
    
    /**
     * 更新实物订单
     * @param physicalOrder 实物订单信息
     * @return 操作结果
     */
    ResponseEntity<Void> updatePhysicalOrder(PhysicalOrder physicalOrder);
    
    /**
     * 根据ID获取实物订单
     * @param id 订单ID
     * @return 实物订单信息
     */
    ResponseEntity<PhysicalOrder> getPhysicalOrderById(Long id);
    
    /**
     * 分页查询实物订单
     * @param page 分页参数
     * @param shopId 店铺ID
     * @return 分页结果
     */
    ResponseEntity<IPage<PhysicalOrder>> listPhysicalOrdersByPage(Page page, Long shopId);
    
    /**
     * 根据买家ID查询订单列表
     * @param buyerId 买家ID
     * @return 订单列表
     */
    ResponseEntity<List<PhysicalOrder>> listPhysicalOrdersByBuyerId(Long buyerId);
    
    /**
     * 根据物流单号查询订单
     * @param trackingNumber 物流单号
     * @return 订单列表
     */
    ResponseEntity<List<PhysicalOrder>> listPhysicalOrdersByTrackingNumber(String trackingNumber);
    
    /**
     * 更新订单状态
     * @param id 订单ID
     * @param status 订单状态
     * @return 操作结果
     */
    ResponseEntity<Void> updateOrderStatus(Long id, Integer status);
    
    /**
     * 更新物流信息
     * @param id 订单ID
     * @param trackingNumber 物流单号
     * @return 操作结果
     */
    ResponseEntity<Void> updateTrackingInfo(Long id, String trackingNumber);
} 